\section{Introducción}

El lenguaje MyLanga, permite definir programas que interpolan linealmente un rango de n'umeros de punto flotante produciendo como salida una lista de pares $x(t)$ $y(t)$ donde $x(t)$ es una funci'on que produce la primer coordenada, $y(t)$ produce la segunda coordenada y ambas funciones se aplican a $t$ el n'umero que itera sobre el rango.


El objetivo es que 'estos pares sean vistos como coordenadas $x,y$ de una curva de nivel  y puedan ser graficados. En nuestra implementaci'on utilizamos el graficador Gnuplot\cite{gnuplot} para graficar la salida.


'Esta operaci'on se define con el comando $plot$:

\begin{verbatim}
plot(x(t), y(t)) for t=-1..0.1..1
\end{verbatim}

En 'este ejemplo $t$ va desde $-1$ hasta $1$ con un paso $+0.1$

A su vez las funciones $x(t)$ y $y(t)$ pueden definirse en el mismo archivo con la siguiente sintaxis:

\begin{verbatim}
function f(x) {
    return x
}
\end{verbatim}

En el ejemplo se define la funci'on identidad que toma un par'ametro $x$ y lo devuelve.

El lenguaje provee varias estructuras de control:

\begin{itemize}
\item Ciclo $while$:

\begin{verbatim}
while condicion {

}
\end{verbatim}

Que ejecuta el c'odigo definido entre las llaves mientras la $condicion$ se cumpla.

\item $if$:

\begin{verbatim}
if condicion then
    return 1
	
if condicion then
    hacer_algo()
else
    hacer_otra_cosa()
\end{verbatim}

La estructura $if$ ejecuta el c'odigo definido despu'es del $then$ si la $condicion$ se cumple. La rama del $else$ es opcional y si est'a definida se ejecuta solo si la $condicion$ es falsa. A su vez el uso de llaves es opcional para sentencias de una linea, pero si se quiere ejecutar varias sentencias dentro de un bloque es necesario encerrar el bloque con llaves.

\end{itemize}

A su vez se permiten definir variables dinamicamente, escribir expresiones aritm'eticas y booleanas.